package com.wzk.travelspringboot.controller.admin;

import com.wzk.travelspringboot.dto.LoginDTO;
import com.wzk.travelspringboot.dto.Result;
import com.wzk.travelspringboot.service.UserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

/**
 * @author wangzikang
 */
@Slf4j
@RestController
@RequestMapping("/admin")
@RequiredArgsConstructor
@Validated
public class AdminLoginController {

    private final UserService userService;

    /**
     * 管理员登录
     * 接受表单格式数据
     */
    @PostMapping("/login")
    public Result login(
            @NotBlank(message = "用户名不能为空！") @RequestParam String username,
            @NotBlank(message = "密码不能为空！") @RequestParam String password,
            @NotBlank(message = "验证码不能为空") @Size(min = 5, max = 5, message = "验证码长度不合法！") @RequestParam String code) {
        
        LoginDTO dto = new LoginDTO();
        dto.setUsername(username);
        dto.setPassword(password);
        dto.setCode(code);
        
        return userService.adminLogin(dto);
    }
    
    /**
     * 管理员登录（JSON格式）
     * 同时支持JSON格式的请求，以便支持多种前端调用方式
     */
    @PostMapping("/loginJson")
    public Result loginJson(@Validated @RequestBody LoginDTO dto){
        return userService.adminLogin(dto);
    }
}
